#ifndef _APIPERSONA_H_
#define _APIPERSONA_H_

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
// Bibliotecas IPC
#include <unistd.h>
#include "../common.h"
// Clases propias
#include "../IPC/Semaphore/Semaphore.h"
#include "../IPC/SharedMemory/ControlDataSharedMemory.h"
#include "../IPC/MessageQueue/TruckDoorInputMessageQueue.h"
#include "../IPC/MessageQueue/TruckDoorOutputMessageQueue.h"
#include "../IPC/MessageQueue/TruckInputMessageQueue.h"
#include "../IPC/MessageQueue/TruckOutputMessageQueue.h"

class APIPersona {

private:
	Semaphore semTruckDoor;
	Semaphore semControl;
	ControlDataSharedMemory shMem;

	// Comunicación con las puertas
	TruckDoorInputMessageQueue truckDoorInputQueue;
	TruckDoorOutputMessageQueue truckDoorOutputQueue;
	
	// Comunicación que involucra la carga de personas
	TruckInputMessageQueue truckChargeInputQueue;
	TruckOutputMessageQueue truckChargeOutputQueue;
	
	// Comunicación que involucra la descarga de personas
	TruckInputMessageQueue truckDischargeInputQueue;
	TruckOutputMessageQueue truckDischargeOutputQueue;
	
	// Buffer para escribir mensajes tanto para enviar, como para mostrar
	// por pantalla
	char buffer[255];

public:

	//
	APIPersona();

	//
	virtual ~APIPersona();
	
	// 
	void entrarASala(long idPersona, int nroPuerta, int *error);

	// 
	void subirACamion(long idPersona, int *error);
	
	// 
	void bajarDeCamion(long idPersona, int *error);
};

#endif

	
	 
  
